package com.pai4j.remote.ugc;
import com.pai4j.common.bean.PAIPageResponseBeanUtil;
import com.pai4j.common.bean.PAIResponseBean;
import com.pai4j.domain.dto.UrlAnalysisResultDTO;
import com.pai4j.domain.vo.request.request.MomentSaveOrUpdateVO;
import com.pai4j.domain.vo.response.moment.MomentDetailVO;
import com.pai4j.domain.vo.response.moment.MomentVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@FeignClient(name = "pai4j-ugc-service", contextId = "pai4jUgcServiceMomentClient")
public interface MomentClient {

    /**
     * 动态发布API
     *
     * @param momentSaveOrUpdate
     * @return
     */
    @PostMapping("/ugc-service/moment/publish")
    PAIResponseBean<Long> publish(@RequestBody MomentSaveOrUpdateVO momentSaveOrUpdate);


    /**
     * 朋友圈动态数据瀑布流翻页加载
     *
     * @param userId
     * @param lastMomentId
     * @param size
     * @return
     */
    @GetMapping("/ugc-service/moment/timeline")
    PAIResponseBean<List<MomentDetailVO>> timeline(@RequestParam String userId,
                                                   @RequestParam Long lastMomentId,
                                                   @RequestParam Integer size);

    /**
     * 公共动态时间线（不带userId）
     *
     * @param lastMomentId 上一次加载的最后一条动态ID（用于基于ID倒序翻页）
     * @param size 加载数量
     * @return 动态详情列表
     */
    @GetMapping("/ugc-service/moment/publicTimeline")
    PAIResponseBean<List<MomentDetailVO>> publicTimeline(@RequestParam Long lastMomentId,
                                                          @RequestParam Integer size);

    /**
     * 获取单个动态详情
     *
     * @param momentId 动态ID
     * @return 动态详情
     */
    @GetMapping("/ugc-service/moment/detail/{momentId}")
    PAIResponseBean<MomentVO> detail(@PathVariable Long momentId);

    /**
     * 获取动态列表
     *
     * @param pageNo   页码
     * @param pageSize 页大小
     * @return 动态列表
     */
    @GetMapping("/ugc-service/moment/pageAuthor")
    PAIResponseBean<PAIPageResponseBeanUtil<MomentVO>> pageAuthor(@RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo,
                                                                  @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
                                                                  @RequestParam(value = "author", required = false) String author);

    /**
     * 展示解析的动态链接
     *
     * @param url   网页链接地址
     * @return UrlAnalysisResultDTO
     */
    @GetMapping("/ugc-service/moment/linkAnalysis")
    PAIResponseBean<UrlAnalysisResultDTO> linkAnalysis(@RequestParam("url") String url);
}
